﻿using Moq;
using NUnit.Framework;
using XRM.Security.DataAccess.Context;

namespace XRM.Security.UnitTest
{
    public class TestsBase
    {
        private Mock<IDbContext> _dbContext;

        public Mock<IDbContext> DbContextMock
        {
            get
            {
                if (_dbContext == null)
                {
                    _dbContext = new Mock<IDbContext>();
                    _dbContext.Setup( s => s.SaveChanges() ).Returns( 0 );
                    _dbContext.Setup( s => s.SetModified(It.IsAny<object>()) );
                }
                return _dbContext;
            }
        }

        /// <summary>
        /// Инициализация общего контекста для всех тестов. Вызывается один раз перед выполнением всех тестов в классе.
        /// </summary>
        [TestFixtureSetUp]
        protected virtual void OnInit()
        {   
        }

        /// <summary>
        /// Инициализация контекста, вызываемая перед выполнением каждого теста.
        /// </summary>
        [SetUp]
        protected virtual void OnSetup()
        {   
        }
    }
}
